`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2022/08/16 18:37:33
// Design Name: 
// Module Name: mcu_cpu_regfile
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module mcu_cpu_regfile(
    input clk,
    input [2:0] rd,
    input [2:0] rs,
    output [15:0] rd_out,
    output [15:0] rs_out,
    
    input [2:0] rd_idx,
    input rd_en,
    input [15:0] rd_in
    );

reg [15:0] regfile[7:0];

assign rd_out = (rd_en && rd == rd_idx) ? rd_in : regfile[rd];
assign rs_out = (rd_en && rs == rd_idx) ? rd_in : regfile[rs];

always @(posedge clk)
    if (rd_en)
        regfile[rd_idx] <= rd_in;

endmodule
